package cn.com.w.mybatisplus.aop;

import cn.com.w.mybatisplus.domain.UserInfo;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import java.util.Objects;


@Component
@Aspect
public class UserIdCheckAop {



    /**
     * 定义切点，切点方法不用任何代码，返回值是void，重要的是条件表达式
     */
    @Pointcut("@annotation(cn.com.w.mybatisplus.annotation.UserIdCheck)")
    public void checkUserIdPoint(){
        System.err.println("checkUserIdPoint");
    }

    @After("checkUserIdPoint()")
    public void after(JoinPoint joinPoint){
        System.out.println("开始检查用户id。");
        Object[] args = joinPoint.getArgs();
        UserInfo userInfo = (UserInfo) args[0];
        if (Objects.isNull(userInfo)) {
            System.err.println("用户不存在");
        } else {
            if (Objects.isNull(userInfo.getId())) {
                userInfo.setId(0L);
            }
        }
    }
}
